home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 003 / mail.arc / MAIL.BAS < prev   
Encoding:
BASIC Source File  |  1986-04-25  |  19.5 KB  |  620 lines

  1. 2 Z=0
  2. 5 ' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  3. 6 ' *                                                         *
  4. 7 ' *     A   M A I L I N G   L I S T   P R O G R A M         *
  5. 8 ' *                                                         *
  6. 9 ' *        B Y   J E R A L D   R .   M A L I N              *
  7. 10 '*                                                         *
  8. 11 '*           D E C E M B E R   1 ,   1 9 8 1               *
  9. 12 '*                                                         *
  10. 13 '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  11. 14 CLS:PRINT STRING$(79,"*")
  12. 15 PRINT "*";STRING$(77,32);"*"
  13. 16 PRINT"*                M A I L I N G   L I S T   M A N A G E R                      *"
  14. 17 PRINT "*";STRING$(77,32);"*"
  15. 18 PRINT"*              B Y   J E R A L D   R .   M A L I N ,  P . E .                 *"
  16. 19 PRINT "*";STRING$(77,32);"*"
  17. 20 PRINT STRING$(79,"*")
  18. 50 CLEAR 10000
  19. 52 WIDTH "LPT1:",132
  20. 55 OPEN"R",1,"DATA":OPEN"R",2,"POINT1"
  21. 60 FIELD 2,4 AS AA$
  22. 70 GET 2,1
  23. 80 DIM G(1000), I$(35)
  24. 90 FOR X=1 TO 35:I$(X)=CHR$(32):NEXT X
  25. 100 ' * * *   M E N U   * * *
  26. 105 CLS:PRINT " M A I L I N G   L I S T   A N D   L A B E L   M A N A G E R":PRINT
  27. 108 PRINT "                  M A I N    M E N U":PRINT
  28. 110 PRINT " 1. ENTER FILE INFORMATION"
  29. 115 PRINT " 2. PRINT FILE"
  30. 120 PRINT" 3. PRINT LABELS"
  31. 125 PRINT" 4. PRINT BY SORT KEY"
  32. 130 PRINT" 5. DISPLAY FILE"
  33. 135 PRINT" 6. SEARCH AND EDIT"
  34. 140 PRINT" 7. DELETE ENTRIES"
  35. 145 PRINT" 8. START NEW DATA FILE"
  36. 150 PRINT" 9. SORT FILE"
  37. 155 PRINT" 0. CLOSE":PRINT
  38. 200 BB$=INKEY$:IF BB$="" GOTO 200
  39. 205 ON VAL(BB$) GOTO 1000,2000,3000,4000,5000,6000,7000,8000,9000
  40. 210 CLOSE:CLS:PRINT "THE END":END
  41. 1000 CLS:GET 2,1:KY%=CVI(AA$):KY%=KY%+1:PR%=KY%:FIELD 1,25 AS T$,25 AS N$,25 AS A$,25 AS C$,15 AS P$,10 AS M$:GET 1,PR%
  42. 1005 PRINT"RECORD NUMBER = ";KY%
  43. 1006 PRINT"               *                         *"
  44. 1008 LINE INPUT "   TITLE LINE = ";T1$:LSET T$=T1$
  45. 1010 LINE INPUT "         NAME = ";N1$:LSET N$=N1$
  46. 1015 LINE INPUT "      ADDRESS = ";A1$:LSET A$=A1$
  47. 1020 LINE INPUT " CITY, ST ZIP = ";C1$:LSET C$=C1$
  48. 1025 LINE INPUT "        PHONE = ";P1$:RSET P$=P1$:PRINT
  49. 1028 PRINT "USE 'M' FOR MEMBER, 'B' FOR BULLETIN, 'MS' FOR SUNDAY SCHOOL":PRINT
  50. 1030 LINE INPUT "     SORT KEY = ";M1$:LSET M$=M1$
  51. 1035 PUT 1,PR%:LSET AA$=MKI$(KY%):PUT 2,1
  52. 1040 GOTO 100
  53. 2000 '* * * * PRINTER ROUTINE * * * *
  54. 2005 CLS:PRINT" * * *  P R I N T E R   R O U T I N E S  * * * ":PRINT
  55. 2010 PRINT"  1. PRINT LISTING ON PRINTER BY ALPHABETIC NAME SORT":PRINT
  56. 2015 PRINT"  2. PRINT LISTING ON PRINTER BY ZIPCODE SORT":PRINT
  57. 2020 PRINT"  3. PRINT LISTING ON PRINTER BY FILE ORDER":PRINT
  58. 2025 PRINT"  4. ALPHABETIZED SORT KEY LISTING":PRINT
  59. 2028 PRINT"  5. RETURN TO MAIN MENU":PRINT
  60. 2030 BB$=INKEY$:IF BB$="" GOTO 2030
  61. 2035 ON VAL(BB$) GOTO 2100,2200,2300,4400,100
  62. 2040 GOTO 2000
  63. 2100 '* * * *  PRINT LISTING ON PRINTER BY ALPHABETIC NAME SORT * * * *
  64. 2105 CLS:PRINT" PRINTING ALPHABETIC NAME SORT ON PRINTER"
  65. 2110 'GOSUB 15000
  66. 2115 GOSUB 14000
  67. 2120 OPEN "I",3,"INDEX1"
  68. 2125 X%=1
  69. 2130 IF EOF(3) GOTO 2150
  70. 2135 INPUT #3,G(X%)
  71. 2140 X%=X%+1
  72. 2145 GOTO 2130
  73. 2150 CLOSE 3
  74. 2155 FOR X=1 TO CVI(AA$)
  75. 2160 KY%=G(X)
  76. 2165 GOSUB 13000
  77. 2170 LPRINT TAB(0)X;:'* *   CHR$(137) IS HORIZ. TAB FOR THE PRINTER
  78. 2175 LPRINT TAB(8)N$;
  79. 2180 LPRINT TAB(37)A$;
  80. 2185 LPRINT TAB(67)C$;
  81. 2190 LPRINT TAB(96)P$;
  82. 2192 LPRINT TAB(120)M$
  83. 2196 NEXT X
  84. 2197 LPRINT CHR$(27)"2";CHR$(18);:' * * SET TO 1/6 INCH, TURN OFF COMPRESSED MODE
  85. 2198 GOTO 100
  86. 2200 '* * * *   ZIPCODE SORT ON PRINTER   * * * *
  87. 2202 J$="SORT BY ZIPCODE"
  88. 2205 CLS:PRINT"  PRINTING ZIPCODE SORT ON PRINTER"
  89. 2210 'GOSUB 15000
  90. 2213 GOSUB 14000
  91. 2215 OPEN "I",3,"INDEX2"
  92. 2220 X%=1
  93. 2225 IF EOF(3) THEN 2245
  94. 2230 INPUT #3,G(X%)
  95. 2235 X%=X%+1
  96. 2240 GOTO 2225
  97. 2245 CLOSE 3
  98. 2250 GOTO 2155
  99. 2300 '* * * *   FILE LIST ON PRINTER  * * * * 
  100. 2302 J$="ENTRY ORDER"
  101. 2305 CLS:PRINT "PRINTING LISTING BY FILE ORDER"
  102. 2310 'GOSUB 15000
  103. 2315 GOSUB 14000
  104. 2320 FOR KY%=1 TO CVI(AA$)
  105. 2325 GOSUB 13000
  106. 2330 GOSUB 12000
  107. 2360 NEXT KY%
  108. 2365 GOTO 2197
  109. 3000 '* * * *   L A B E L   R O U T I N E  * * * *
  110. 3005 CLS:PRINT" * * *  L A B E L   R O U T I N E S  * * *":PRINT
  111. 3010 PRINT"  1. PRINT LABELS BY ALPHABETIC NAME SORT":PRINT
  112. 3015 PRINT"  2. PRINT LABELS BY ZIPCODE SORT":PRINT
  113. 3020 PRINT"  3. PRINT LABELS BY FILE ORDER":PRINT
  114. 3025 PRINT"  4. PRINT INDIVIDUAL LABELS":PRINT
  115. 3026 PRINT"  5. ZIPCODE ORDER BY SORT KEY":PRINT
  116. 3027 PRINT"  6. RETURN TO MAIN MENU":PRINT
  117. 3030 BB$=INKEY$:IF BB$="" GOTO 3030
  118. 3035 ON VAL(BB$) GOTO 3100,3200,3300,3400,4300,100
  119. 3040 GOTO 3000
  120. 3100 '* * * * PRINT LABELS BY ALPHABETIC NAME SORT * * * *
  121. 3105 CLS:PRINT "PRINTING LABELS BY ALPHABETIC NAME SORT"
  122. 3106 PRINT:INPUT "LINE UP LABELS THEN HIT <ENTER>";L$
  123. 3110 'GOSUB 15000
  124. 3115 OPEN "I",3,"INDEX1"
  125. 3120 X%=1
  126. 3125 IF EOF(3) THEN 3145
  127. 3130 INPUT #3,G(X%)
  128. 3135 X%=X%+1
  129. 3140 GOTO 3125
  130. 3145 CLOSE 3
  131. 3150 LPRINT CHR$(27)"2"CHR$(18);:' * *  SET 1/6 SPACING, TURN OFF COMPRESSED MODE
  132. 3155 FOR X=1 TO CVI(AA$)
  133. 3160 KY%=G(X)
  134. 3165 GOSUB 13000
  135. 3168 LPRINT T$
  136. 3169 GOSUB 19000
  137. 3170 LPRINT N3$;N2$
  138. 3175 LPRINT A$
  139. 3180 LPRINT C$
  140. 3185 LPRINT:LPRINT
  141. 3190 NEXT X
  142. 3195 GOTO 100
  143. 3200 '* * * *   LABELS SORTED BY ZIPCODE   * * * *
  144. 3205 CLS:PRINT"PRINTING LABELS SORTED BY ZIPCODE"
  145. 3206 PRINT:INPUT"LINE UP LABELS THEN HIT <ENTER>";L$
  146. 3210 'GOSUB 15000
  147. 3215 OPEN "I",3,"INDEX2"
  148. 3220 X%=1
  149. 3225 IF EOF(3) THEN 3245
  150. 3230 INPUT #3,G(X%)
  151. 3235 X%=X%+1
  152. 3240 GOTO 3225
  153. 3245 CLOSE 3
  154. 3250 GOTO 3150
  155. 3300 '* * * * PRINT LABELS BY FILE ORDER * * * *
  156. 3305 CLS:PRINT "PRINTING LABELS BY FILE ORDER"
  157. 3306 PRINT:INPUT "LINE UP LABELS THEN HIT <ENTER>";L$
  158. 3310 'GOSUB 15000
  159. 3315 LPRINT CHR$(27)"2"CHR$(18);:'* *  SET TO 1/6 SPACING, TURN OFF COMPRESSED MODE
  160. 3320 FOR KY%=1 TO CVI(AA$)
  161. 3325 GOSUB 13000
  162. 3328 LPRINT T$
  163. 3330 LPRINT N3$;N2$
  164. 3335 LPRINT A$
  165. 3340 LPRINT C$
  166. 3345 LPRINT:LPRINT
  167. 3350 NEXT KY%
  168. 3355 GOTO 100
  169. 3400 '* * * * PRINT INDIVIDUAL LABELS * * * *
  170. 3405 CLS:PRINT"PRINTING INDIVIDUAL LABELS"
  171. 3410 'GOSUB 15000
  172. 3415 LPRINT CHR$(27)"2"CHR$(18);:'* * SET 1/6 SPACING, TURN OFF COMPRESSED MODE
  173. 3420 INPUT "ENTER LISTING NUMBER OF LABEL TO BE PRINTED ";Y
  174. 3422 KY%=Y
  175. 3425 GOSUB 13000
  176. 3428 LPRINT T$
  177. 3429 GOSUB 19000
  178. 3430 LPRINT N3$;N2$
  179. 3435 LPRINT A$
  180. 3440 LPRINT C$
  181. 3445 LPRINT:LPRINT
  182. 3450 INPUT "ENTER ANOTHER LISTING NUMBER, OR 0 TO RETURN TO MENU";Y
  183. 3455 IF Y=0 THEN 100
  184. 3460 GOTO 3422
  185. 4000 '* * * *  PRINT BY SELECTION * * * *
  186. 4005 CLS:PRINT"  P R I N T   B Y   S O R T   K E Y":PRINT
  187. 4010 PRINT"  1. PRINT LISTING BY SORT KEY":PRINT
  188. 4012 PRINT"  2. ALPHABETIZED SORT KEY LISTING":PRINT
  189. 4015 PRINT"  3. PRINT LABELS BY SORT KEY":PRINT
  190. 4020 PRINT"  4. PRINT LABELS BY ZIPCODE & SORT KEY":PRINT
  191. 4022 PRINT"  5. RETURN TO MAIN MENU":PRINT
  192. 4025 BB$=INKEY$:IF BB$=""GOTO 4025
  193. 4030 ON VAL(BB$) GOTO 4100,4400,4200,4300,100,4000,4000,4000,4000
  194. 4035 GOTO 4000
  195. 4100 '* * * *  LISTING BY SORT CODE  * * * *
  196. 4105 CLS:PRINT"PRINT LISTING BY SORT CODE":PRINT:PRINT
  197. 4108 'GOSUB 15000
  198. 4110 GOSUB 14000
  199. 4115 GET 2,1:INPUT "ENTER SELECTION PARAMETER ";S$
  200. 4120 FOR KY%=1 TO CVI(AA$)
  201. 4125 GOSUB 13000
  202. 4130 A=LEN(S$)
  203. 4135 IF LEFT$(M$,A)=S$ THEN GOSUB 12000
  204. 4140 NEXT KY%
  205. 4145 PRINT
  206. 4150 PRINT"END OF FILE"
  207. 4155 LPRINT CHR$(27)"2"CHR$(18);:'* *  SET TO 1/6 SPACING, TURN OFF COMPRESSED MODE
  208. 4160 GOTO 100
  209. 4200 '* * * *   LABELS BY SORT KEY   * * * *
  210. 4205 CLS:PRINT"PRINTING LABELS BY SORT KEY":PRINT:PRINT
  211. 4210 LPRINT CHR$(27)"2"CHR$(18);:'* *  SET TO 1/6 SPACING, TURN OFF COMPRESSED MODE
  212. 4215 GET 2,1:INPUT "ENTER SORT KEY PARAMETER ";S$
  213. 4220 FOR KY%=1 TO CVI(AA$)
  214. 4225 GOSUB 13000
  215. 4230 A=LEN(S$)
  216. 4235 IF LEFT$(M$,A)=S$ THEN GOSUB 12100
  217. 4240 NEXT KY%
  218. 4245 PRINT
  219. 4250 PRINT"END OF FILE"
  220. 4260 GOTO 100
  221. 4300 '* * * *  LABELS BY ZIPCODE AND SORT CODE  * * * *
  222. 4305 CLS:PRINT "PRINTING LABELS BY ZIPCODE & SORT KEY":PRINT:PRINT
  223. 4310 LPRINT CHR$(27)"2"CHR$(18);:'* *  SET TO 1/6 SPACING, TURN OFF COMPRESSED MODE
  224. 4315 GET 2,1:INPUT "ENTER SELECTION PARAMETER ";S$
  225. 4320 PRINT:INPUT "LINE UP LABELS THEN HIT <ENTER>";L$
  226. 4325 'GOSUB 15000
  227. 4330 OPEN "I",3,"INDEX2"
  228. 4335 X%=1
  229. 4340 IF EOF(3) THEN 4360
  230. 4345 INPUT #3,G(X%)
  231. 4350 X%=X%+1
  232. 4355 GOTO 4340
  233. 4360 CLOSE 3
  234. 4365 LPRINT CHR$(27)"2"CHR$(18);:' * *  SET 1/6 SPACING, TURN OFF COMPRESSED MODE
  235. 4370 FOR X=1 TO CVI(AA$)
  236. 4375 KY%=G(X)
  237. 4380 GOSUB 13000
  238. 4385 A=LEN(S$)
  239. 4390 IF LEFT$(M$,A)=S$ THEN GOSUB 12100
  240. 4395 NEXT X
  241. 4396 PRINT
  242. 4397 PRINT"END OF FILE"
  243. 4399 GOTO 100
  244. 4400 '* * * *  AALLPHABETIZED SORT KEY LISTING * * * *
  245. 4405 CLS:PRINT"ALPHABETIZED SORT KEY LISTING":PRINT:PRINT
  246. 4415 GET 2,1:INPUT "ENTER SORT KEY PARAMETER ";S$
  247. 4425 'GOSUB 15000
  248. 4427 GOSUB 14000
  249. 4430 OPEN "I",3,"INDEX2"
  250. 4435 X%=1
  251. 4440 IF EOF(3) THEN 4460
  252. 4445 INPUT #3,G(X%)
  253. 4450 X%=X%+1
  254. 4455 GOTO 4440
  255. 4460 CLOSE 3
  256. 4465 LPRINT CHR$(27)"0"CHR$(15);:'* *  SET TO 1/8 SPACING, TURN ON COMPRESSED MODE
  257. 4470 FOR X=1 TO CVI(AA$)
  258. 4475 KY%=G(X)
  259. 4480 GOSUB 13000
  260. 4485 A=LEN(S$)
  261. 4490 IF LEFT$(M$,A)=S$ THEN GOSUB 12000
  262. 4495 NEXT X
  263. 4496 PRINT
  264. 4497 PRINT"END OF FILE"
  265. 4499 GOTO 100
  266. 5000 '* * * *  DISPLAY ROUTINES  * * * *
  267. 5005 CLS:PRINT"D I S P L A Y   R O U T I N E S":PRINT
  268. 5010 PRINT"  1. DISPLAY ENTIRE LISTING":PRINT
  269. 5015 PRINT"  2. DISPLAY INDIVIDUAL ENTRY":PRINT
  270. 5020 PRINT"  3. RETURN TO MAIN MENU":PRINT
  271. 5025 BB$=INKEY$:IF BB$="" GOTO 5025
  272. 5030 ON VAL(BB$) GOTO 5100,5200,100,5000,5000,5000,5000,5000,5000
  273. 5035 GOTO 5000
  274. 5100 '* * * *   DISPLAY LISTING  * * * *
  275. 5105 CLS:PRINT"         M A I L I N G   L I S T   D I S P L A Y":PRINT
  276. 5110 A=1
  277. 5115 FOR KY%=1 TO CVI(AA$)
  278. 5120 GOSUB 13000
  279. 5125 PRINT TAB(5)T$
  280. 5128 PRINT TAB(0)KY%;TAB(5)N$
  281. 5130 PRINT TAB(5)A$;TAB(40)P$
  282. 5135 PRINT TAB(5)C$;TAB(40)M$
  283. 5140 PRINT
  284. 5145 A=A+1
  285. 5150 IF A>4 GOTO 5170
  286. 5155 NEXT KY%
  287. 5156 PRINT "END OF FILE, HIT ANY KEY TO RETURN TO MENU "
  288. 5160 L$=INKEY$
  289. 5162 IF L$="" GOTO 5160
  290. 5165 GOTO 100
  291. 5170 PRINT "HIT <SPACE> TO CONTINUE, OR HIT < - > TO RETURN TO":PRINT "THE MAIN MENU, OR HIT <R> FOR PREVIOUS PAGE"
  292. 5171 L$=INKEY$:IF L$="" GOTO 5171
  293. 5172 IF L$="R" OR L$="r" GOTO 5500
  294. 5174 IF L$="-" GOTO 100
  295. 5175 A=1
  296. 5185 GOTO 5155
  297. 5190 L$=INKEY$:IFL$=""GOTO 5190
  298. 5195 GOTO 100
  299. 5200 '* * * *   SINGLE DISPLAY    * * * *
  300. 5205 CLS:INPUT "ENTER LISTING NUMBER TO BE DISPLAYED ";A
  301. 5210 IF A>CVI(AA$) THEN 5205
  302. 5215 KY%=A
  303. 5220 GOSUB 13000
  304. 5225 PRINT
  305. 5228 PRINT TAB(0)A;TAB(5)T$
  306. 5230 PRINT TAB(5)N$
  307. 5235 PRINT TAB(5)A$;TAB(40)P$
  308. 5240 PRINT TAB(5)C$;TAB(49)M$
  309. 5245 PRINT:PRINT
  310. 5250 PRINT "ENTER ANOTHER LISTING NUMBER OR ENTER ZERO TO RETURN"
  311. 5252 PRINT "ENTER <E> FOR EDIT MODE"
  312. 5255 INPUT " ";L$
  313. 5257 IF L$="E" GOTO 6310
  314. 5258 IF L$=CHR$(101) GOTO 6310
  315. 5259 L=VAL(L$)
  316. 5260 IF L=0 GOTO 100
  317. 5265 IF L>CVI(AA$) GOTO 5250
  318. 5270 A=L
  319. 5275 GOTO 5215
  320. 5500 '* * *  REVERSE SCROLL ROUTINE * * * * 
  321. 5505 KY%=KY%-8
  322. 5510 A=1
  323. 5515 IF KY%<1 THEN KY%=1
  324. 5520 GOTO 5120
  325. 6000 '* * * *   SEARCH AND EDIT ROUTINES   * * * *
  326. 6005 CLS:PRINT" S E A R C H   A N D   E D I T   R O U T I N E S":PRINT
  327. 6010 PRINT"  1. SEARCH FOR NAME":PRINT
  328. 6015 PRINT"  2. SEARCH FOR LISTING NUMBER":PRINT
  329. 6020 PRINT"  3. EDIT FILE ENTRY":PRINT
  330. 6025 PRINT"  4. RETURN TO MAIN MENU":PRINT
  331. 6030 BB$=INKEY$:IF BB$="" GOTO 6030
  332. 6035 ON VAL(BB$) GOTO 6100,6200,6300,100,6000,6000,6000,6000,6000
  333. 6040 GOTO 6000
  334. 6100 '* * * *   SEARCH FOR NAME  * * * *
  335. 6105 CLS:PRINT" * * *  S E A R C H   F O R   N A M E   * * *":PRINT
  336. 6110 PRINT:PRINT:INPUT "ENTER NAME TO BE SEARCHED = ";L$
  337. 6115 GET 2,1:L1=LEN(L$)
  338. 6120 FOR KY%=1 TO CVI(AA$)
  339. 6125 GOSUB 13000
  340. 6130 IF LEFT$(N$,L1)=L$ GOTO 6160
  341. 6135 NEXT KY%
  342. 6140 PRINT"END OF FILE"
  343. 6145 PRINT"PRESS ANY KEY TO CONTINUE"
  344. 6148 PRINT"PRESS <E> FOR EDIT MODE"
  345. 6150 BB$=INKEY$:IF BB$="" GOTO 6150
  346. 6152 IF BB$="E" GOTO 6310
  347. 6153 IF BB$=CHR$(101) GOTO 6310
  348. 6155 GOTO 6000
  349. 6160 PRINT TAB(0)KY%;TAB(5)T$
  350. 6162 PRINT TAB(5)N$
  351. 6165 PRINT TAB(5)A$;TAB(40)P$
  352. 6170 PRINT TAB(5)C$;TAB(49)M$
  353. 6175 PRINT
  354. 6180 GOTO 6135
  355. 6200 '* * * *  NUMBER SEARCH ROUTINE  * * * *
  356. 6205 CLS:PRINT" * * *  N U M B E R   S E A R C H   R O U T I N E   * * *":PRINT:PRINT
  357. 6210 INPUT "ENTER LISTING NUMBER TO BE DISPLAYED ";A
  358. 6215 IF A>CVI(AA$) GOTO 6210
  359. 6220 KY%=A
  360. 6225 GOSUB 13000
  361. 6230 PRINT:PRINT
  362. 6235 PRINT TAB(0)A;TAB(5)T$
  363. 6238 PRINT TAB(5)N$
  364. 6240 PRINT TAB(5)A$;TAB(40)P$
  365. 6245 PRINT TAB(5)C$;TAB(49)M$
  366. 6250 PRINT:PRINT
  367. 6255 PRINT "ENTER ANOTHER LISTING NUMBER OR ENTER ZERO TO RETURN"
  368. 6256 INPUT "ENTER <E> FOR EDIT MODE   ";L$
  369. 6257 IF L$="E" GOTO 6310
  370. 6258 L=VAL(L$)
  371. 6259 IF L$=CHR$(101) GOTO 6310
  372. 6260 IF L=0 GOTO 6000
  373. 6265 IF L>CVI(AA$) THEN 6255
  374. 6270 A=L
  375. 6275 GOTO 6220
  376. 6300 '* * * *   EDIT ROUTINE  * * * *
  377. 6305 CLS:PRINT" * * *    E D I T   R O U T I N E    * * *":PRINT
  378. 6310 INPUT "ENTER LISTING NUMBER TO BE EDITED ";A
  379. 6315 IF A>CVI(AA$) GOTO 6310
  380. 6320 KY%=A
  381. 6322 R%=A
  382. 6325 GOSUB 13000
  383. 6330 PRINT
  384. 6335 PRINT TAB(0)"LISTING NUMBER";TAB(20)KY%
  385. 6340 PRINT TAB(0)"NAME";TAB(20)N$
  386. 6343 PRINT TAB(0)"TITLE";TAB(20)T$
  387. 6345 PRINT TAB(0)"ADDRESS";TAB(20)A$
  388. 6350 PRINT TAB(0)"CITY-STATE-ZIP";TAB(20)C$
  389. 6355 PRINT TAB(0)"PHONE NUMBER";TAB(20)P$
  390. 6360 PRINT TAB(0)"SORT KEY";TAB(20)M$
  391. 6365 PRINT
  392. 6370 PRINT "DO YOU WISH TO CHANGE THE INFORMATION?  Y/N"
  393. 6375 L$=INKEY$:IF L$="" GOTO 6375
  394. 6380 IF LEFT$(L$,1)="Y" GOTO 6400
  395. 6381 IF L$=CHR$(121) THEN 6400
  396. 6385 GOTO 6000
  397. 6400 'FILE CORRECTION ROUTINE
  398. 6405 CLS:PRINT"* * * F I L E   C O R R E C T I O N   M O D E * * *":PRINT
  399. 6406 PRINT "IS THE TITLE CORRECT?":PRINT T$
  400. 6407 L$=INKEY$:IF L$="" GOTO 6407
  401. 6408 IF LEFT$(L$,1)="N" GOTO 6495
  402. 6410 PRINT "IS THE NAME CORRECT?":PRINT N$
  403. 6415 L$=INKEY$:IF L$="" GOTO 6415
  404. 6420 IF LEFT$(L$,1)="N" GOTO 6500
  405. 6421 IF L$=CHR$(110) GOTO 6500
  406. 6425 PRINT "IS THE ADDRESS CORRECT?":PRINT A$
  407. 6430 L$=INKEY$:IF L$="" GOTO 6430
  408. 6435 IF LEFT$(L$,1)="N" GOTO 6510
  409. 6436 IF L$=CHR$(110) GOTO 6510
  410. 6440 PRINT "IS THE CITY-STATE-ZIP CORRECT?":PRINT C$
  411. 6445 L$=INKEY$:IF L$="" GOTO 6445
  412. 6450 IF LEFT$(L$,1)="N" GOTO 6520
  413. 6451 IF L$=CHR$(110) GOTO 6520
  414. 6455 PRINT "IS THE PHONE NUMBER CORRECT?":PRINT P$
  415. 6460 L$=INKEY$:IF L$="" GOTO 6460
  416. 6465 IF LEFT$(L$,1)="N" GOTO 6530
  417. 6466 IF L$=CHR$(110) GOTO 6530
  418. 6470 PRINT "IS THE SORT KEY CORRECT?":PRINT M$
  419. 6475 L$=INKEY$:IF L$="" GOTO 6475
  420. 6480 IF LEFT$(L$,1)="N" GOTO 6540
  421. 6481 IF L$=CHR$(110) GOTO 6540
  422. 6490 GOTO 6000
  423. 6495 LINE INPUT "TITLE = ";T1$:LSET T$=T1$:PUT 1,PR%
  424. 6496 GOTO 6410
  425. 6500 LINE INPUT "NAME = ";N1$:LSET N$=N1$:PUT 1,PR%
  426. 6505 GOTO 6425
  427. 6510 LINE INPUT "ADDRESS = ";A1$:LSET A$=A1$:PUT 1,PR%
  428. 6515 GOTO 6440
  429. 6520 LINE INPUT "CITY-STATE-ZIP = ";C1$:LSET C$=C1$:PUT 1,PR%
  430. 6525 GOTO 6455
  431. 6530 LINE INPUT "PHONE NUMBER = ";P1$:LSET P$=P1$:PUT 1,PR%
  432. 6535 GOTO 6470
  433. 6540 LINE INPUT "SORT KEY = ";M1$:LSET M$=M1$:PUT 1,PR%
  434. 6545 GET 2,1:KY%=A
  435. 6550 GOSUB 13000
  436. 6555 PUT 1,PR%:GOTO 6000
  437. 7000 '* * * *  DELETE ENTRY ROUTINE * * * *
  438. 7005 CLS:PRINT"* * * *    D E L E T E   E N T R Y   R O U T I N E    * * * *":PRINT
  439. 7010 INPUT "ENTER FILE NUMBER TO BE DELETED ";A
  440. 7015 KY%=CVI(AA$)
  441. 7020 GOSUB 13000
  442. 7025 T1$=T$:N1$=N$:A1$=A$:C1$=C$:P1$=P$:M1$=M$
  443. 7030 KY%=A
  444. 7035 GOSUB 13000
  445. 7040 PRINT TAB(0)KY%;TAB(5)T$
  446. 7042 PRINT TAB(5)N$
  447. 7045 PRINT TAB(5)A$;TAB(40)P$
  448. 7050 PRINT TAB(5)C$;TAB(49)M$
  449. 7055 PRINT
  450. 7060 INPUT "ARE YOU SURE  (Y/N)";L$
  451. 7065 IF LEFT$(L$,1)="Y" GOTO 7100
  452. 7066 IF L$=CHR$(121) GOTO 7100
  453. 7070 GOTO 100
  454. 7100 LSET T$=T1$:LSET N$=N1$:LSET A$=A1$:LSET C$=C1$:RSET P$=P1$:LSET M$=M1$
  455. 7105 PUT 1,PR%
  456. 7110 KY%=(CVI(AA$)-1)
  457. 7120 LSET AA$=MKI$(KY%)
  458. 7130 PUT 2,1
  459. 7140 GOTO 100
  460. 8000 '* * * *   START NEW DATA FILE  * * * *
  461. 8002 CLS:PRINT "DO YOU WISH TO ERASE ALL PREVIOUS ENTRIES"
  462. 8005 INPUT "AND START FROM SCRATCH  (Y/N)";L$
  463. 8010 IF LEFT$(L$,1)="Y" GOTO 8020
  464. 8011 IF L$=CHR$(121) GOTO 8020
  465. 8015 GOTO 100
  466. 8020 CLOSE
  467. 8022 KILL "DATA":KILL "POINT1"
  468. 8025 OPEN "R",1,"DATA":OPEN "R",2,"POINT1"
  469. 8030 FIELD 2,4 AS AA$
  470. 8035 LSET AA$=MKI$(0):PUT 2,1
  471. 8040 GOTO 100
  472. 9000 '* * * *   SORT ROUTINE   * * * * 
  473. 9005 CLS:PRINT"* * * *   S O R T   R O U T I N E   * * * *":PRINT
  474. 9010 PRINT
  475. 9015 PRINT"STARTING ALPHABETIC SORT BY NAME"
  476. 9020 GET 2,1:KY%=CVI(AA$)
  477. 9022 IF Z>0 GOTO 9030
  478. 9025 DIM U$(KY%+20),U(KY%+20),V$(KY%+20),V(KY%+20),N(KY%+20),W$(KY%+20),W(KY%+20)
  479. 9026 Z=1:'SWITCH TO PREVENT RE-DIMENSIONING AN ARRAY
  480. 9030 PRINT"READING DATA FILE"
  481. 9035 Y=CVI(AA$)
  482. 9040 FOR KY%=1 TO Y
  483. 9045 GOSUB 13000
  484. 9048 U$(KY%)=N$
  485. 9050 GOSUB 17000
  486. 9055 W$(KY%)=W$:U(KY%)=KY%:W(KY%)=KY%
  487. 9060 NEXT KY%
  488. 9065 PRINT"STARTING SORT BY NAME"
  489. 9067 PRINT"PLEASE STAND BY"
  490. 9070 L=INT(Y/2)+1
  491. 9075 N1=Y
  492. 9080 IF L=1 THEN 9100
  493. 9085 L=L-1
  494. 9090 V$=U$(L):V=U(L)
  495. 9095 GOTO 9120
  496. 9100 V$=U$(N1):V=U(N1)
  497. 9105 U$(N1)=U$(1):U(N1)=U(1)
  498. 9110 N1=N1-1
  499. 9115 IF N1=1 GOTO 9180
  500. 9120 J=L
  501. 9125 I=J
  502. 9130 J=2*J
  503. 9135 IF J=N1 GOTO 9155
  504. 9140 IF J>N1 GOTO 9170
  505. 9145 IF U$(J)>=U$(J+1) GOTO 9155
  506. 9150 J=J+1
  507. 9155 IF V$>=U$(J) GOTO 9170
  508. 9160 U$(I)=U$(J):U(I)=U(J)
  509. 9165 GOTO 9125
  510. 9170 U$(I)=V$:U(I)=V
  511. 9175 GOTO 9080
  512. 9180 U$(1)=V$:U(1)=V
  513. 9185 PRINT"ALPHA SORT COMPLETE, FILING INDEX"
  514. 9190 OPEN "O",3,"INDEX1"
  515. 9195 FOR X=1 TO CVI(AA$)
  516. 9200 PRINT #3,U(X)
  517. 9205 NEXT X
  518. 9210 CLOSE 3
  519. 9215 PRINT"ALPHA INDEX STORED ON DISK, STARTING ZIP CODE SORT"
  520. 9218 L=INT(Y/2)+1
  521. 9220 N1=Y
  522. 9225 IF L=1 GOTO 9245
  523. 9230 L=L-1
  524. 9235 V$=W$(L):V=W(L)
  525. 9240 GOTO 9265
  526. 9245 V$=W$(N1):V=W(N1)
  527. 9250 W$(N1)=W$(1):W(N1)=W(1)
  528. 9255 N1=N1-1
  529. 9260 IF N1=1 GOTO 9325
  530. 9265 J=L
  531. 9270 I=J
  532. 9275 J=2*J
  533. 9280 IF J=N1 GOTO 9300
  534. 9285 IF J>N1 GOTO 9315
  535. 9290 IF W$(J)>=W$(J+1) GOTO 9300
  536. 9295 J=J+1
  537. 9300 IF V$>=W$(J) GOTO 9315
  538. 9305 W$(I)=W$(J):W(I)=W(J)
  539. 9310 GOTO 9270
  540. 9315 W$(I)=V$:W(I)=V
  541. 9320 GOTO 9225
  542. 9325 W$(1)=V$:W(1)=V
  543. 9330 PRINT"ZIPCODE SORT COMPLETE
  544. 9335 OPEN "O",3,"INDEX2"
  545. 9340 FOR X=1 TO CVI(AA$)
  546. 9345 PRINT #3,W(X)
  547. 9350 NEXT X
  548. 9355 CLOSE 3
  549. 9360 PRINT"ZIPCODE INDEX STORED ON DISK
  550. 9365 FOR X=1 TO 500:NEXT X
  551. 9370 GOTO 100
  552. 12000 '* * * * PRINTER FORMATS * * * * 
  553. 12005 '   LISTING FORMAT
  554. 12010 LPRINT TAB(0)KY%;:'* *  CHR$(137) IS HORIZ. TAB FOR PRINTER
  555. 12015 LPRINT TAB(8)N$;
  556. 12020 LPRINT TAB(37)A$;
  557. 12025 LPRINT TAB(67)C$;
  558. 12030 LPRINT TAB(96)P$;
  559. 12035 LPRINT TAB(120)M$
  560. 12040 RETURN
  561. 12100 ' LABEL FORMAT
  562. 12103 LPRINT T$
  563. 12104 GOSUB 19000
  564. 12105 LPRINT N3$;N2$
  565. 12110 LPRINT A$
  566. 12115 LPRINT C$
  567. 12120 LPRINT:LPRINT
  568. 12125 RETURN
  569. 13000 '*** FILE FORMAT ***
  570. 13005 PR%=KY%:FIELD 1,25 AS T$,25 AS N$,25 AS A$,25 AS C$,15 AS P$,10 AS M$:GET 1,PR%
  571. 13010 RETURN
  572. 14000 ' * * *   H E A D E R   S E T U P   * * *
  573. 14002 'GOSUB 15000
  574. 14003 LPRINT CHR$(18);
  575. 14005 LPRINT CHR$(14);"  * MAILING LIST MANAGER  * ";CHR$(20):'SET EXPANDED MODE, TURN IT OFF
  576. 14010 LPRINT CHR$(27)"0"CHR$(15);:'SET 1/8 SPACING, TURN ON COMPRESSED MODE
  577. 14012 LPRINT STRING$(131,126)
  578. 14013 '* *  SET UP HORIZONTAL TAB POSITIONS * * 
  579. 14015 LPRINT CHR$(27)"D";CHR$(129);CHR$(134);CHR$(164);CHR$(194);CHR$(224);CHR$(242);CHR$(128);
  580. 14020 LPRINT CHR$(137)"ITEM";
  581. 14025 LPRINT CHR$(137)"NAME";
  582. 14030 LPRINT CHR$(137)"ADDRESS";
  583. 14035 LPRINT CHR$(137)"CITY-STATE-ZIP";
  584. 14040 LPRINT CHR$(137)"       PHONE";
  585. 14045 LPRINT CHR$(137)"SORT KEY"
  586. 14048 LPRINT STRING$(131,126):PRINT
  587. 14050 RETURN
  588. 15000 '* * *   IS PRINTER READY???    * * *
  589. 15005 ZZ=PEEK(14312)
  590. 15010 IF ZZ=63 THEN RETURN
  591. 15015 PRINT "* * PRINTER NOT READY * *"
  592. 15020 FOR G=1 TO 200:NEXT
  593. 15025 PRINT "                         "
  594. 15030 GOTO 15005
  595. 17000 '*** FIND ZIPCODE ROUTINE ***
  596. 17010 FOR Q=1 TO 25
  597. 17020 IF MID$(C$,Q,1)="," GOTO 17040
  598. 17030 NEXT Q
  599. 17040 Q=Q+5
  600. 17050 W$=MID$(C$,Q,5)
  601. 17060 RETURN
  602. 19000 '* * * NAME DECODE * * *
  603. 19005 FOR I=1 TO 25
  604. 19010 I$(I)=MID$(N$,I,1)
  605. 19015 NEXT I
  606. 19020 FOR I=1 TO 27
  607. 19025 IF I$(I)="," THEN J=I 
  608. 19030 IF I$(I)=" " AND I$(I+1)=" " THEN K=I
  609. 19035 IF I$(I)=" " AND I$(I+1)=" " GOTO 19100
  610. 19040 NEXT I
  611. 19045 FOR X =1 TO 25
  612. 19050 PRINT I$(X);
  613. 19052 PRINT ASC(I$(X));
  614. 19055 NEXT X
  615. 19060 PRINT J, K
  616. 19065 END
  617. 19100 N2$=LEFT$(N$,J-1)
  618. 19110 N3$=MID$(N$,J+2,K-(J+1))
  619. 19115 RETURN
  620.